﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace GestorDeFlotasDesktop.AbmUsuario
{
    public partial class ModificacionUsuario : Form
    {
        public ModificacionUsuario()
        {
            InitializeComponent();
        }

        public void EsconderBotonHabilitar()
        {
            buttonHabilitar.Visible = false;
        }

        #region llenarRoles
        private void llenarRoles()
        {
            sqlManager.Conectar();
            DataTable dtrol = sqlManager.ObtenerRoles();
            sqlManager.Desconectar();

            foreach (DataRow fila in dtrol.Rows)
            {
                listaRoles.Items.Add(fila["Rol"]);
            }

            listaRoles.ClearSelected();

        }
        #endregion

        private void RolesDelUsuario()
        {
            sqlManager.Conectar();
            DataTable dtrol = sqlManager.ObtenerRolesDelUsuario(textBoxUsuario.Text);
            sqlManager.Desconectar();
            int indice;
            foreach (DataRow rol in dtrol.Rows)
            {
                indice = BuscarRolEnLista(rol["Rol"].ToString());
                listaRoles.SetItemCheckState(indice,CheckState.Checked);
            }

        }
        private int BuscarRolEnLista(string descripcion)
        {
            for (int i = 0; i <= listaRoles.Items.Count - 1; i++)
            {
                if (descripcion == listaRoles.Items[i].ToString())
                    return i;
            }
            return -1;
        }

        private void ModificacionUsuario_Load(object sender, EventArgs e)
        {
            llenarRoles();
            RolesDelUsuario();
        }

        private void buttonSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        #region completarCampos
        public void completarCampos()
        {

            if (textBoxUsuario.Text == string.Empty)
            {
                labelUsuario.ForeColor = Color.Red;
                labelUsuario.Text = "* Campo Obligatorio";
            }
        }
        #endregion

        #region ningunNull
        public int ningunNull()
        {
            if (textBoxUsuario.Text == string.Empty)
                return 1;
            else
                return 0;
        }

        #endregion

        private bool esChecked(int indice)
        {
            for (int i = 0; i <= listaRoles.CheckedIndices.Count - 1; i++)
            {
                if (indice == listaRoles.CheckedIndices[i])
                    return false;
            }
            return true;
        }
        

        public void CargarDatos(ListadoUsuario.usuario datoUsuario)
        {
            textBoxUsuario.Text = datoUsuario.username;
            //textBoxPass.Text = datoUsuario.password;
            textBoxPass.Text = string.Empty;
            return;
        }

        private void buttonGuardar_Click(object sender, EventArgs e)
        {
            if (ningunNull() == 0)
            {
                if(textBoxPass.Text != string.Empty)
                {
                    sqlManager.Conectar();
                    int resultado = sqlManager.ModificarUsuarioPass(textBoxUsuario.Text, encryptor.Encriptar(textBoxPass.Text));
                    sqlManager.Desconectar();
                }
                sqlManager.Conectar();
                for (int i = 0; i <= listaRoles.Items.Count - 1; i++)
                {
                    if (!esChecked(i))
                        sqlManager.DarRolUsuario(textBoxUsuario.Text, listaRoles.Items[i].ToString());
                    else
                        sqlManager.EliminarRolUsuario(textBoxUsuario.Text,listaRoles.Items[i].ToString());
                }
                MessageBox.Show("Se pudo Modificar correctamente", "Log", MessageBoxButtons.OK, MessageBoxIcon.Information);
                sqlManager.Desconectar();
            }
            else
                MessageBox.Show("Debe completar todos los campos", "Modificacion Usuario", MessageBoxButtons.OK, MessageBoxIcon.Error);

            completarCampos();
        }

        private void buttonHabilitar_Click(object sender, EventArgs e)
        {
            if (textBoxUsuario.Text != string.Empty)
            {
                sqlManager.Conectar();
                int result = sqlManager.HabilitarUsuario(textBoxUsuario.Text);
                sqlManager.Desconectar();

                if (result != 1)
                {
                    MessageBox.Show("No se pudo habilitar", "Log", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    MessageBox.Show("Se habilito correctamente", "Log", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    buttonHabilitar.Visible = false;
                }
            }
        }
    }
}
